home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / conv / mconv_19.lha / MausConv.c < prev    next >
C/C++ Source or Header  |  1994-10-27  |  3KB  |  106 lines

  1. /* MausConv
  2.  *
  3.  * Ein Konvertierer zwischen IBM- und Amiga-Umlauten, mit besonderer
  4.  * Berücksichtigung der Maus-Eigenheiten
  5.  */
  6.  
  7. #include "MausConv.h"
  8.  
  9. Prototype int main (int, char **);
  10.  
  11. int main (int argc, char **argv)
  12. {
  13.     unsigned char *neu;             //Tabelle der zu ersetzenden Buchstaben
  14.     //FILE *in;                       //Eingabefile
  15.     //FILE *out;                      //Ausgabefile
  16.     BPTR in;                        //Eingabefile
  17.     BPTR out;                       //Ausgabefile
  18.     unsigned char *buffer;          //Puffer
  19.     long i;                         //Zähler
  20.     long j;                         //Zähler
  21.  
  22.     if ((argc != 4) ||
  23.         ((stricmp (argv[3],"maus2ami") != 0) &&
  24.          (stricmp (argv[3],"ami2maus") != 0)))
  25.     {
  26.         //printf ("\n%s\n\n", VERSTAG+7);
  27.         //printf ("Aufruf: %s <Eingabedatei> <Ausgabedatei> maus2ami\n", argv[0]);
  28.         //printf ("  oder: %s <Eingabedatei> <Ausgabedatei> ami2maus\n", argv[0]);
  29.         Printf ("\n%s\n\n", VERSTAG+7);
  30.         Printf ("Aufruf: %s <Eingabedatei> <Ausgabedatei> maus2ami\n", argv[0]);
  31.         Printf ("  oder: %s <Eingabedatei> <Ausgabedatei> ami2maus\n", argv[0]);
  32.         exit(RETURN_ERROR);
  33.     }
  34.  
  35.     if (stricmp (argv[3],"maus2ami") == 0)
  36.         neu = m2a;
  37.     else
  38.         neu = a2m;
  39.  
  40.     //if ((in = fopen (argv[1], "rb")) == NULL)
  41.     if ((in = Open(argv[1], MODE_OLDFILE)) == (BPTR)NULL)
  42.     {
  43.         //printf ("%s: Kann Eingabefile \"%s\" nicht öffnen!\n", argv[0], argv[1]);
  44.         Printf ("%s: Kann Eingabefile \"%s\" nicht öffnen!\n", argv[0], argv[1]);
  45.         exit(RETURN_ERROR);
  46.     }
  47.     //if ((out = fopen (argv[2], "wb")) == NULL)
  48.     if ((out = Open(argv[2], MODE_NEWFILE)) == NULL)
  49.     {
  50.         //printf ("%s: Kann Ausgabefile \"%s\" nicht öffnen!\n", argv[0], argv[2]);
  51.         Printf ("%s: Kann Ausgabefile \"%s\" nicht öffnen!\n", argv[0], argv[2]);
  52.         //fclose(in);
  53.         Close(in);
  54.         exit(RETURN_ERROR);
  55.     }
  56.  
  57.     if ((buffer = (char *)malloc(SIZE)) == NULL)
  58.     // Die Verwendung von AllocMem macht das Programm größer!
  59.     //if ((buffer = (char *)AllocMem(SIZE,0L)) == NULL)
  60.     {
  61.         //printf ("%s: Kein Speicher!\n", argv[0]);
  62.         Printf ("%s: Kein Speicher!\n", argv[0]);
  63.         //fclose(in);
  64.         //fclose(out);
  65.         Close(in);
  66.         Close(out);
  67.         exit(RETURN_ERROR);
  68.     }
  69.  
  70.     do
  71.     {
  72.         //i = fread (buffer, 1, SIZE, in);
  73.         i = Read (in, buffer, SIZE);
  74.         //printf("i=%d\n",i);
  75.         for (j=0; j<i; j++)
  76.         {
  77.             //printf("buffer[%d]: %d (%c) -> ",j,buffer[j],buffer[j]);
  78.             buffer[j] = neu[buffer[j]];
  79.             //printf("%d (%c)\n",buffer[j],buffer[j]);
  80.         }
  81.         //j = fwrite (buffer, 1, i, out);
  82.         j = Write (out, buffer, i);
  83.         if (j != i)
  84.         {
  85.             //printf ("%s: Write Error!\n", argv[0]);
  86.             Printf ("%s: Write Error!\n", argv[0]);
  87.             //fclose(in);
  88.             //fclose(out);
  89.             free(buffer);
  90.             Close(in);
  91.             Close(out);
  92.             //FreeMem(buffer,SIZE);
  93.             exit(RETURN_ERROR);
  94.         }
  95.     }
  96.     while (i);
  97.  
  98.     //fclose(in);
  99.     //fclose(out);
  100.     free(buffer);
  101.     Close(in);
  102.     Close(out);
  103.     //FreeMem(buffer,SIZE);
  104.     exit(RETURN_OK);
  105. }
  106.